iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
AI & Data

(C/C++)利用ChatGPT整理CPE(大學程式能力檢定)一星題庫系列 第 6

(DAY 6)CPE一星題庫UVA11332&UVA10252(C/C++)

  • 分享至 

  • xImage
  •  

CPE 大學程式能力檢定

CPE 大學程式能力檢定(College Programming Examination)是台灣的一項程式能力檢定考試,由台灣電腦軟體能力鑑定協會(TCSA)所主辦。
本檢定每年辦理四次。
第一次考試:約在每年的 2 月或 3 月舉行。
第二次考試:約在每年的 5 月或 6 月舉行。
第三次考試:約在每年的 8 月或 9 月舉行。
第四次考試:約在每年的 11 月或 12 月舉行。
考試時程--
2011年9月開始,為3月/5月/9月(或10月)/12月的星期二舉行。
最新一次為2023/10/17(二),17:30

UVA11332

ChatGPT 問題輸入:

大學程式能力檢定 UVA11332 Problem J: Summing Digits 問題的中文與英文描述,包含錯誤處理和邊界檢查的完整C++範例程式碼,用於解決UVA11332問題,以及解題思路的解釋

這個問題描述了一個數字遊戲,其中你需要計算一個正整數的數位之和,然後不斷重複這個過程,直到最終得到一個單一的數字。以下是問題的中文和英文描述:

問題描述
中文:給定一個正整數n,計算n的各位數字之和,然後將結果替換為新的數字。重複這個過程,直到最終獲得一個單一的數字。請找出這個最終的數字。
英文:Given a positive integer n, calculate the sum of its digits, and then replace n with this sum. Repeat this process until you obtain a single-digit number. Find this final single-digit number.
範例程式碼:

#include <iostream>
using namespace std;

// 函數用於計算一個數字的各位數字之和
int sumOfDigits(int n) {
    int sum = 0;
    while (n > 0) {
        sum += n % 10; // 取出最後一位數字並加到總和中
        n /= 10; // 去掉最後一位數字
    }
    return sum;
}

int main() {
    int n;
    while (cin >> n) {
        if (n == 0) {
            break; // 如果輸入為0,則退出循環
        }

        // 使用sumOfDigits函數計算各位數字之和,直到得到一個單一的數字
        while (n >= 10) {
            n = sumOfDigits(n);
        }

        cout << n << endl; // 輸出最終的單一數字
    }
    return 0;
}

上面的程式碼首先定義了一個函數sumOfDigits,它計算一個數字的各位數字之和。然後,在main函數中,我們不斷使用sumOfDigits函數,直到得到一個單一的數字。這個過程在一個while循環中進行,直到輸入的數字為0時退出。

解題思路:
這個問題的主要思路是使用循環計算各位數字之和,直到得到一個單一的數字。然後,輸出這個最終的單一數字。

UVA10252

ChatGPT 問題輸入:

大學程式能力檢定 UVA10252 Common Permutation 問題的中文與英文描述,包含錯誤處理和邊界檢查的完整C++範例程式碼,用於解決UVA10252問題,以及解題思路的解釋

這個問題描述了如何找到兩個字串的共同排列(permutation)。以下是問題的中文和英文描述:

問題描述
中文:給定兩個字串a和b,找到它們的共同排列(permutation)。共同排列是指可以通過重新排列字元得到的字串,字元順序可以不同,但字元的種類和數量必須相同。請找到一個最長的共同排列。
英文:Given two strings a and b, find their common permutation. A common permutation is a permutation of both strings such that it can be obtained by rearranging the characters. The order of characters may be different, but the characters' types and counts must be the same. Find the longest common permutation.

範例程式碼:

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main() {
    string a, b;
    while (getline(cin, a) && getline(cin, b)) {
        string commonPermutation = "";
        
        // 對兩個字串進行排序,以便比較共同排列
        sort(a.begin(), a.end());
        sort(b.begin(), b.end());
        
        // 使用雙指針法比較兩個排序後的字串,找到共同排列
        int i = 0, j = 0;
        while (i < a.length() && j < b.length()) {
            if (a[i] == b[j]) {
                commonPermutation += a[i];
                i++;
                j++;
            } else if (a[i] < b[j]) {
                i++;
            } else {
                j++;
            }
        }
        
        cout << commonPermutation << endl;
    }
    return 0;
}

上面的程式碼首先讀取兩個輸入的字串a和b,然後對它們進行排序。接下來,我們使用雙指針法比較排序後的字串,找到共同排列,並將它們存儲在commonPermutation中。最後,我們輸出commonPermutation,即最長的共同排列。

解題思路:
這個問題的主要思路是對兩個字串進行排序,然後使用雙指針法比較它們,找到共同排列。我們可以利用排序的特性來簡化共同排列的查找過程。


上一篇
(DAY 5)CPE一星題庫UVA10008&UVA10222(C/C++)
下一篇
(DAY 7)CPE一星題庫UVA490&UVA272(C/C++)
系列文
(C/C++)利用ChatGPT整理CPE(大學程式能力檢定)一星題庫11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言